What is base64?
base64는 말 그대로 64진법이라는 뜻을 가지고 있습니다.
8bit Binary Data(Ex.실행파일, zip파일 등)를 64개의 ASCII문자로 변환하는 Encoding방식입니다.
여기서 64개의 ASCII문자는 대문자 알파벳(A-Z)26개, 소문자 알파벳(a-z)26개, 숫자(0-9)10개, 두 가지의 기호. 즉, 총 64개를 말합니다.
메일에서 첨부파일(Ex.이미지, 오디오 파일)를 전송하기 위해 사용 하는 등 여러 방면에서 활용되고 있습니다. 플랫폼에서 binary data를 전송하기 위해 사용한답니다!
Let's do this!
'base'라는 문자열을 base64로 인코딩해봅시다!
① 우선 문자열을 ASCII로 변환해줍니다.
문자열 | b |
a |
s |
e |
ASCII | 98 |
97 |
115 |
101 |
② 변환된 ASCII를 6bit씩 묶기 위해 binary로 변환해줍니다.
ASCII | 98 | 97 | 115 | 101 |
binary | 01100010 | 01100001 | 01110011 | 01100101 |
③ 변환된 binary를 6bit씩(64개의 문자를 사용하기 때문(=2^64)) 끊어줍니다.
여기서 주의할점은 남는 비트 뒤에 0을 채워 6bit를 만들어 주어야 한다는 점!!
binary |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
index | 011000 | 100110 | 000101 | 110011 | 011001 | 010000 |
④ 6bit씩 끊어주었으면 이를 10진수로 변환합니다.
index | 011000 | 100110 | 000101 | 110011 | 011001 | 010000 | ||||||||||||||||||||||||||
dec | 24 | 38 | 5 | 51 | 25 | 16 |
⑤ 이 10진수를 base64 table을 참조하여 변환해줍니다.
결과로 YmFzZQ가 나왔습니다
dec | 24 | 38 | 5 | 51 | 25 | 16 | ||||||||||||||||||||||||||
base64 | Y | m | F | z | Z | Q |
⑥ base64는 24bit 단위(3개 문자)로 인코딩이 이루어집니다. base를 24bit단위로 인코딩하려면 남은 bit수를 =로 맞춰줘야 합니다. 따라서 결과는 YmFzZQ==입니다~!
24bit | 24bit | |||||||||||||||||||||||||||||||||||||||||||||||
binary | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
base64 | Y | m | F | z | Z | Q | = | = |
끄읕^~^!